#!/usr/bin/env python3
# query_sql.py
# usage: python src/query/query_sql.py --query order_status_total_day


import sys
import argparse
import json
from pathlib import Path

SQL_OUTPUT_DIR = "./sql_output"


def query_sql(query):
    """
    根据查询字符串，精确匹配同名 .sql 文件（大小写敏感），返回其内容。

    参数:
        query (str): 查询字符串，用于匹配文件名（不含后缀）

    返回:
        str: SQL 文件内容，未找到则返回 None
    """
    sql_dir = Path(SQL_OUTPUT_DIR)

    if not sql_dir.exists():
        raise FileNotFoundError(f"目录不存在: {SQL_OUTPUT_DIR}")
    if not sql_dir.is_dir():
        raise NotADirectoryError(f"路径不是目录: {SQL_OUTPUT_DIR}")

    # 构造目标文件路径：{query}.json
    target_file = sql_dir / f"{query}.json"

    if not target_file.exists():
        return None  # 文件不存在，返回 None

    try:
        with open(target_file, 'r', encoding='utf-8') as f:
            data = json.load(f)  # 解析 JSON 文件
            return data.get("DDL")  # 返回 DDL 字段的内容
    except (json.JSONDecodeError, IOError) as e:
        # 可选：记录错误日志
        print(f"读取或解析文件失败: {e}")
        return None

def main():
    parser = argparse.ArgumentParser(description="精确匹配 .sql 文件名并输出内容（大小写敏感）")
    parser.add_argument('--query', type=str, required=True, help='查询字符串（需与 .json 文件名完全一致，不含后缀）')

    args = parser.parse_args()

    try:
        result = query_sql(args.query)
        if result is not None:
            print(result)
        else:
            print(f"未找到名为 '{args.query}.sql' 的文件。", file=sys.stderr)
            sys.exit(1)
    except Exception as e:
        print(f"错误: {e}", file=sys.stderr)
        sys.exit(1)


if __name__ == "__main__":
    main()